מהיום אתה יכול להיות חלק מהאתר. יש לך גישה לקוד שנמצא מאחורי האתר phpguide.co.il. תוכל לתרום מהידע, מהזמן ומהקוד שלך לפיתוח הקהילה - לפתח את האתר במו ידיך, ללמוד מהקוד ולעבוד בצוות עם מפתחים אחרים. מעוניין?
הקוד
כל הקוד של האתר ממוקם באחסון Git הגדול ביותר לפרויקטי קוד פתוח - GitHub.com, בכתובת https://GitHub.com/intval/PHPguide.
ניתן להוריד את הגרסה העדכנית ביותר של הקוד דרך Git או באמצעות לחיצה על כפתור ה-Download שמופיע בקישור. אפשר לראות את הקוד גם בלי לצאת מהאתר.
דרישות
הקוד מבוסס על YiiFramework, כלי פיתוח PHP שמזרז מאוד תהליכים.
בשביל עבודה תקינה תצטרכו גם שרת MySQL. תוכלו למצוא בקישור אל הקוד גם קובץ db.sql שמכיל כמה רשומות התחלתיות למסד.
הוראות התקנה נמצאים בקובץ Readme.md.
העלאת קוד
כדי לשפר ולתרום קוד לאתר תצטרכו להירשם ל-GitHub.com וללמוד לעבוד עם Git. (מדריכי ה-Git שפרסמתי באתר עשויים לעזור לך בנושא הזה.)
אמנם הקוד ייבחן לפני שבאמת יגיע לאתר, אך הפרויקט פתוח ל-Commit-ים של כולם.
על בעיות אבטחה שתגלו אפשר וכדאי לדווח ישירות לי. אפשר במסנג'ר, אפשר בהודעה פרטית, ואפשר פשוט לתקן ולעשות Commit.
כנראה שזה לא מה שציפית - לגלות שכל הקוד מבוסס על פריימוורק שאף פעם לא ראית ואין לך מושג מה זה. אולי בשבילך זו תהיה סיבה טובה ללמוד אותו ולהבין שגם אתר מסובך מאוד אפשר לכתוב בקלות כזו ובכמות קוד מזערית כמו זו שתראה.
תגובות לכתבה:
איפה מאוחסנות הכתבות עצמן?
במסד נתונים בטבלה blog
ואיך זה שולף אותן? איפה ה index.php בעצם?
כדי להבין מה בעצם עושה כל הקוד אני ממליץ לקורא וללמוד את yii ו- mvc
index.php מקבלת את הבקשה ומנתבת אותה לקונטרולרים השונים בהתאם לכתובת (לפי התנאים המוגדרים ב conf.php
את השליפה עושה ה homepage controller
מצאתי אתר מעניין שנקרא
http://he.yiiframework.co.il/index
אמנם אין להם תרגום מלא של הדוקומנטציה, אבל זה נראה כאילו הם המקור ללמוד על yii למכתנת הישראלי
אני אף פעם לא עבדתי את פריימוורק, וניסיתי כמה שיותר לא להכנס ל"נושא" הזה..
אתה יכול להסביר מעט מה זה פריימוורק ואיך הוא משנה את העבודה? האם הוא משנה את הקוד? במה הוא עוזר?
תושה אלכס.
בצרה פריימוורק זה הוסף של קוד שעושה את כל העבודה "השחורה" במקום המתכנת ובכך מקצר את זמן הפיתוח וכמות הקוד של המפתח לכתוב.
למשל yii מציאה לך בונוסים כמו שימוש ב MVC מוכן, ובמקום שתכתוב מערכת כזו משלך אתה פשוט שולף נתונים מהמסד, כותב HTNL וקורא לפונקציה הדפס(נתונים, קובץ HTML). יחסית קל ונוח.
פריממורק דואג לנתב במקומך את הבקשות שמגיאות לשרת אל הקונטרולרים, לעבוד עם מסד נתונים. למשל YII מסוגלת בכמה שורות לייצר טופס שהערכים ממנו יגיעו ישירות לטבלה מבסד, כאשר חלק מהשורות האלה יגדירו את התנאים (כמו השדה X הוא חובה) וYII תעשה את הבדיקות לבד, כולל אפשרות של בדיקות אותם הדרישות ב JS ושליחת הטופס ב AJAX
וכל זה בלי שתכתוב את כל הקוד בעצמך, אלה תבצע קריאה לפונקציה מוכנה של createFrom או משהו בסגנון.
יש עוד הרבה ייתרונות כפי שמתאר האתר http://yiiframework.com
אני לא מבין את צורת העבודה שלך, אבל כל הכבוד על השיתוף.
אני עובד בצורה אחרת לחלוטין.
אתה עובד עם yii ?
אשמח אם תשתחף אותנו (אותי?) בצורת העבודה שלך. מעניין אותי. מקווה ללמוד משם משהו חדש.
אני בניתי בעצמי את המחלקות שמנהלות כל אתר שאני בונה.
כל אתר חדש משתמש באותם מחלקות כי הם מאוד מאוד גמישות לעבודה עם המון סוגים של אתרים.
כמובן שיש פעמים שאני כן צריך להיכנס למחלקות שבניתי ולערוך אותם, אבל הם מספיק גמישות בשבילי.
אף פעם לא רציתי להשתמש בפריימוורק כי זה גורם לי להרגיש שלא הכל תחת שליטתי. חיסרון שלי :)
תודה על הפירסום!
גם אני מעדיף לבנות בעצמי ולא להיות תלוי...
כי בסופו של דבר אם אתה מתכנת php אתה צריך לדעת php ולא רק איזה framework אחד שיכול להיות שיעזבו אותו במשך השנים ואז אני ישאר בלי ידע בנושא.
רק גורם לי לנסות לעזור לכם.
כל הכבוד :)
משתמש_14247 :
פרימוורק זה אותם מחלקות שכבר בנו במקומך שהרבה מאוד אנשים השקיעו בהם ועשו אותם נוחות וקלות לתפעול. אתה יכול להשתמש בהם כמשהו מוכן ויכול לכתוב הכל בעצמך. אני הגעתי למסקנה שהפרימוורק הזה שווה לא פחות ואף יותר מפריימוורק שאני יכתוב בעצמי, כי כמות הזמן והכח שאני יצטרך להשקיע בו כדי להביא אותו לרמת יכולות זהה היא _עצומה_
משתמש_12729 :
אין ספק שצריך לדעת PHP . זה שאני משתמש בפרייוורק לא גורם לי פתאום לא לדעת PHP, זה רק גורם לי לכתוב קוד הרבה יותר מהר.
משתמש_14231 :
זו הייתה המטרה המקורית. אני מאוד אשמח אם תעשה את זה :)
הטבלה zzsmf_topics לא קיימת בDB.sql
תודה. הוספתי.
אפשר לדעת מה מיוחד בפריימורק שהצעת?
לא רואה משהו מיוחד בו..
מה זה חוסך לי? תן דוגמאות בבקשה.
פרימוורק באופן כללי חוסף לך המון עבודה סיזיפית, כמו הדוגמא 4 תגובות למעלה בעבדה עם טפסים, בדיקתם, הכנסתם למסד, ערכית רשומות עם ערכשים נשלפים ו-ajax.
הפרימוורק הזה ספציפית נחשב לפרימוורק המהיר ביותר מבין הפרימוורקים הבוגרים הקיימים היום.
עבדתי בדיוק כמו בהוראות המצורפות ואני מקבל שגיאה
Invalid argument supplied for foreach()
C:\wamp\www\framework\collections\CMap.php(277)
עבור השורה
49 Yii::createWebApplication($config)->run();
אתה יכול לצרף את ה stack trace המלא ? הבעיה היא איפשהו בפנים עם שליפה כלשהי לדעתי.
אני לא מצליח להתקין את המערכת
אני מקבל דבר כזה:
PHP Error
Invalid argument supplied for foreach()
C:\wamp\www\intval-phpguide-135d8bf\server\framework\collections\CMap.php(277)
הבעיה משום מה שבקובץ config.php לא עובד האינקלוד לקובץ dbconnection.php כמו שצריך. אתה יכול להציב את התוכן של מערך החיבור למסד ישירות לתוך הקובץ config.php , רק על תעשה לו בינתיים commit
אני ינסה למצוא את הסיבה לזה ולעשות עם זה משהו.
הלכתי לכמה דקות וכבר הפכת את האתר הזה לאחד המקורות היותר איכותיים בעברית ל-PHP ובכלל פיתוח אתרים.
כל הכבוד על ההשקעה, בהחלט נהניתי לראות את השינויים :).
IoSolidar למקרה שתהית על התגובה למעלה.
תודה על המילים החמות :-)
פריימוורק לא בא במקום php אלא בנוסף
יותר קל ונכון ללמוד פרמוורק מאשר לייצר בעצמך
שימוש בפרמוורק אחיד גורם לעבודה קלה יותר במעבר בין מתכנתים
התקנתי את המערכת וקיבלתי:
Internal Server Error
get_include_path() has been disabled for security reasons
An internal error occurred while the Web server was processing your request. Please contact the webmaster to report this problem.
Thank you.
מה הסיבה?
התקנת במחשב הלוקאלי ? יש בעיות עם ההגדרות. צריך לשנות ב PHP.INI את
safe_mode = Off
ובשורה של disabled_functions להוריד את get_include_path
לא התקנתי את זה על שרת רגיל
יש מגבלות לחברת האחסון שלך. תנסה לכתוב לתמיכה שלהם, להגיד שאתה מפעיל מערכת YII ולשאולל מה ניתן לעשות בנושא.
יש הרבה בעיות בהתקנה. המבנה של המסד לא מעודכן. חסרות עמודות.
yiic.bat migrate
^ אם זה היה בתגובה להודעתי, אז לא, זה לא קשור. מדובר במבנה המיושן של המסד.
הוא צודק, המיגרציות יעדכנו לך את מבנה המסד לגרסה העדכנית ביותר שכרגע מופעלת.
אם הפעלת מיגרציות ועדיין מבנה המסד לא תקין - תן לי לדעת, למרות שלפי כמות הפורקים הכל שם נראה בסדר.
כמו שאמרתי, המיגרציה לא עשתה את זה. נאלצתי לתקן ידנית חלק מהדברים. נשאר רק החלק של htaccess.
אגב מבנה המסד בעצמו שגוי עוד לפני כל המיגרציות. נוצרת שגיאה בטבלה blog_comments. לא יצא לי להתעמק יותר מדי במערכת, אולי אראה מה לעשות אחר כך.
באמת הצורת בנייה של האתר מדהימה, האתר מדהים! לא אעזוב אותו לעולם!
רק עוד משהו.. אני מעוניין ללמוד Yii בצורה ממש מקיפה, שאפילו אוכל לבנות אתרים בעזרת הפריימוורק. ראיתי שיש פה ארבעה מדריכים, אבל הם לא מספיקים.. אשמח לאתר טוב ללמידת הפריימוורק. עדיף עברית, אבל אין לי שום בעיה עם אנגלית. תודה!
@o4exa
תודה :)
יש מדריך מקיף באתר המקורי http://www.yiiframework.com/doc/guide/
מצד שמאל יש אפשרות לבחור שפה, יש גם בעברית.
@ctulhu
אתה עושה משהו לא נכון
http://youtu.be/ype8jx_e3sg
כל השגיאות שיש לך בוידאו - טיפלתי בהם מיד כשנתקלתי בהם. כמו שאמרתי מקודם, נשאר ה-htaccess. היו גם שגיאות נוספות מלבד זה. ולא, לצערי אני לא עושה משהו לא נכון.
לא שמתי לב לקטע האחרון - המסד הועלה אצלך בהצלחה בעוד שאצלי הציג שגיאה.
ננסה לעשות משהו.
באיזה שורה השגיאה, מה השגיאה ומה גרסת המסד ?
החלתי לעשות הכול מחדש. בינתיים זה:
https://gist.github.com/1684153
מה שלא היה מקודם.
כן, לצערי הייתי צריך להתקין ואמפ לפני יומיים. שונא אותו, אבל לא הייתה ברירה.
Чего то устал походу. Не замечаю какую нибудь чушь :)
short_open_tags On ?
לא זה לא זה. הורדתי את ואמפ. כנראה הוא לא אהב את php 5.4. בכל מקרה, כמעט סיימתי עם זה. אך משהו לא בסדר עם המסד בכל זאת:
https://gist.github.com/1684611
תנסה לעבור על זה
http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-table-mydbsql-328_45frm-errno-150/
+ סעיף 11 שלא רשום שם זה עם כבר קיים constrait עם שם כזה (non unique constraint name)
בדיוק גיגלתי את זה. את האמת לא יצא לי לפגוש כזאת שגיאה. בכל מקרה, אראה מה אוכל לעשות, תודה.
נראה כי הבעיה עם המסד נפתרה. אחרי קצת סריקה, שמתי לב שהסוגים שונים. אחרי שינוי כל הטבלאות ל-MyISAM הכול עבד. אני חושב שכדאי לשנות גם אצלך. אך עכשיו הוא לא רוצה לעשות מיגרציה: https://gist.github.com/1685042
נראה כמו משהו פשוט. אראה מאוחר יותר כשהמוח יתחיל לפעול כמו שצריך :)
myIsam לא תומך ב קשרים בין טבלאות (foreign keys)
הבעיה גם לא בסוג הטבלה, כי הטבלה נוצרת, אלה ב foreign key
שמתווסף לה אחר כך בעזרת alter table
המיגרציות נכשלות בגלל אותה סיבה, שאחת מהן מוסיפה foreign key על אחת העמודות
אתה תראה שהשגיאה בשורה: add foreign key
להעביר אותם ל myIsam זה לא פתרון טוב. הטבלאות חייבות להישאר InnoDB
נכון צודק. בקיצור זה מעייף כבר, אני לא חושב שככה זה אמור להתבצע. כנראה הרעיון שרציתי להוסיף לאתר לא יתממש.
אתה יכול לאפשר remote connections ולשלוח לי שם משתמש/סיסמה למסד שלך ?
באיזה מערכת השתמשת??
שמתי לב שזה לא וורדפרס..
intval כתב את המערכת לבד בעזרת פריימוורק בשם yii (כמו שכתוב בפוסט עצמו).
אתה יכול להעלות את הקבצים של עכשיו?
כאילו את הקבצים המעודכנים לעכשיו (:
תודה!
הוא תמיד הכי עדכני ב github
ד"א, מה עם ההודעות הפרטיות וכל אלה?
ואני ממליץ לעשות אפשרות לצטט ולמי שצוטט תגיע התראה.
איפה נמצאת תקיית ה Article ?, חיפשתי גם בקבצים, וגם ב .htaccess ..
אין תיקיה article.
יש mvc, htaccess, ו YII
איפה נמצא ה Script של שליחת התגובות? (בשאלה לא בפוסט)
עדיף לשאול דברים כאלה ב-GitHub, פשוט לפתוח Issue. בכל מקרה: https://github.com/intval/phpguide/blob/master/protected/controllers/CommentsController.php
אני מחפש את ה JavaScript
אני גם לא ידעתי איפה זה. התבוננתי במבנה התיקיות וחיפשתי קצת. והנה זה:
https://github.com/intval/phpguide/blob/master/static/scripts/qna.js
לא מצאתי פה את השליחה מצאתי רק את ה edit
בפעם המאה (השלישית, האמת), תחפש לבד או תפתח על זה Issue בגיטהאב. אז מתברר שאין שם JS. בכל זאת, שליחת תגובות לשאלות מתבצעת על ידי המתודה actionAnswer של QnaController.